package com.gengzp.system.facade;

import com.gengzp.common.model.base.resp.GenericResp;
import com.gengzp.common.model.user.entity.SysUser;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @ClassName SysUserFacade
 * @Description 系统用户门面层接口
 * @Author gengzp
 * @Date 2025/5/17 2:08
 */
public interface ISysUserFacade {

    /**
     * 根据用户id查询系统用户
     *
     * @param userId 用户id
     * @return 系统用户
     */
    SysUser searchSysUserById(Long userId);

    /**
     * 根据用户账号和用户昵称查询系统用户
     *
     * @param userAccount  用户账号
     * @param userNickname 用户昵称
     * @return 系统用户
     */
    List<SysUser> searchSysUserByUserAccountAndUserNickname(String userAccount, String userNickname);

    /**
     * 添加系统用户
     *
     * @param sysUser 系统用户
     */
    void addSysUser(SysUser sysUser);

    /**
     * 根据用户id集合查询用户id对应用户昵称映射
     *
     * @param userIds 用户id集合
     * @return 用户id对应用户昵称映射     key:用户id   value:用户昵称
     */
    Map<Long, String> searchUserId2NicknameMapByUserIds(Collection<Long> userIds);

    /**
     * 编辑系统用户信息
     *
     * @param sysUser 系统用户
     */
    void editSysUser(SysUser sysUser);

    /**
     * 填充实体类操作人信息
     *
     * @param entities 实体类集合
     */
    void fillInEntitiesOperatorInfo(List<? extends GenericResp> entities);

    /**
     * 填充实体类操作人信息
     *
     * @param entity 实体类
     */
    void fillInEntityOperatorInfo(GenericResp entity);

}
